package edu.cuit.avatar.enums;

/**
 * @author <a href="mailto:1020zhaodan@163.com">Adan</a>
 * @version 1.0
 * @date 2025/7/19 14:17
 */
public enum TrafficLamp {
    RED(30){
        @Override
        public TrafficLamp nextLamp() {
            return GREEN;
        }
    },
    GREEN(60){
        @Override
        public TrafficLamp nextLamp() {
            return YELLOW;
        }
    },
    YELLOW(3){
        @Override
        public TrafficLamp nextLamp() {
            return RED;
        }
    };

    /**
     * 特征：交通灯时长
     */
    private int time;

    /**
     * 通过构造方法初始化数据
     */
    TrafficLamp(int time){
        this.time = time;
    }

    /**
     * 实例方法:获取当前交通灯的亮灯时长
     * @return 亮灯时长
     */
    public int getTime() {
        return time;
    }

    /**
     * 枚举也可以定义抽象方法,由子类来实现
     * @return 下一个交通灯
     */
    public abstract TrafficLamp nextLamp();
}
